home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
usenet
/
sources
/
volume90
/
util
/
st
/
part01
/
input.c
next >
Wrap
C/C++ Source or Header
|
1990-06-04
|
2KB
|
90 lines
/* input.c
created by John Schultz, 10-Sep-89
*/
#include <exec/types.h>
#include <exec/io.h>
#include <exec/ports.h>
#include <exec/interrupts.h>
#include <proto/exec.h>
#include <proto/graphics.h>
#include <devices/input.h>
#include <devices/inputevent.h>
#include "input.h"
unsigned short volatile raw; /* raw key value */
struct MsgPort indevport;
struct MsgPort * indevportptr;
struct IOStdReq * inreqblockptr;
struct Interrupt inhandler;
struct InputEvent * eventp;
extern void totalinput();
int createti(void) {
indevportptr = CreatePort("indevport",0);
if (!indevportptr) {
return 0;
}
inreqblockptr = CreateStdIO((struct MsgPort *)indevportptr);
if (!inreqblockptr) {
DeletePort(indevportptr);
return 0;
}
inhandler.is_Data = (APTR)&raw;
inhandler.is_Code = totalinput;
inhandler.is_Node.ln_Pri = 51; /* One ahead of Intuition */
if (OpenDevice("input.device",0L,
(struct IORequest *)inreqblockptr,0L)) {
DeletePort(indevportptr);
DeleteStdIO(inreqblockptr);
return 0;
}
inreqblockptr->io_Command = IND_ADDHANDLER;
inreqblockptr->io_Data = (APTR)&inhandler;
if (DoIO((struct IORequest *)inreqblockptr)) {
DeletePort(indevportptr);
DeleteStdIO(inreqblockptr);
CloseDevice((struct IORequest *)inreqblockptr);
return 0;
}
GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0);
if(!GfxBase) {
DeletePort(indevportptr);
DeleteStdIO(inreqblockptr);
CloseDevice((struct IORequest *)inreqblockptr);
return 0;
}
FreeSprite(0);
CloseLibrary((struct Library *)GfxBase);
return 1;
} /* end createti */
void deleteti(void) {
if ((indevportptr) && (inreqblockptr)) {
inreqblockptr->io_Command = IND_REMHANDLER;
inreqblockptr->io_Data = (APTR)&inhandler;
DoIO((struct IORequest *)inreqblockptr);
CloseDevice((struct IORequest *)inreqblockptr);
DeleteStdIO(inreqblockptr);
DeletePort(indevportptr);
} /* end if */
} /* END deleteti */
/* END input.c */